package com.alibaba.middleware.hsf.protostuff;

import com.alibaba.middleware.hsf.Data;
import com.alibaba.middleware.hsf.guide.api.model.OrderModel;

import io.protostuff.LinkedBuffer;
import io.protostuff.ProtostuffIOUtil;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;

/**
 * @author weipeng2k 2017年12月27日 上午11:06:08
 */
@State(Scope.Benchmark)
public class DeserialPerf {

    byte[] content;

    @Setup
    public void init() {
        content = ProtostuffIOUtil.toByteArray(Data.gen(), SerialPerf.schema,
                LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));
    }

    @Benchmark
    @BenchmarkMode(Mode.Throughput)
    public void deserial() {
        OrderModel message = SerialPerf.schema.newMessage();
        ProtostuffIOUtil.mergeFrom(content, message, SerialPerf.schema);
    }
}
